import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;

/**
 * Egyszerű gráf reprezentációt megvalósító osztály. Tartalmazza a csúcsok
 * számát és a csúcsokat. Minden csúcsnak van: egy időtartama (mennyi ideig tart
 * elvégezni az adott feladatot) és két listája, amely tartalmazza az adott
 * csúcsba bemenő és az adott csúcsból kimenő éleket.
 * 
 * @author Gasztány Richárd
 * 
 */
public class Graf {
	private int csucsokSzama;
	private Csucs[] csucsok;

	public int getCsucsokSzama() {
		return csucsokSzama;
	}

	public Csucs[] getCsucsok() {
		return csucsok;
	}

	public Graf() {
		try {

			// Read properties file.
			Properties properties = new Properties();
			properties.load(new FileInputStream("resources/properties.properties"));

			System.out.println(properties.getProperty("input"));

			FileReader fileReader = new FileReader(properties.getProperty("input"));
			BufferedReader bufferedReader = new BufferedReader(fileReader);

			csucsokSzama = Integer.parseInt(bufferedReader.readLine());
			csucsok = new Csucs[csucsokSzama];

			String sor = bufferedReader.readLine();
			StringTokenizer str = new StringTokenizer(sor);
			System.out.println("Csúcsok száma: " + csucsokSzama);
			for (int i = 0; i < csucsokSzama; i++) {
				csucsok[i] = new Csucs();
				csucsok[i].idotartam = Integer.parseInt(str.nextToken());
			}

			sor = bufferedReader.readLine();
			while (sor != null) {
				int honnan = sor.charAt(0) - 'A';
				int hova = sor.charAt(2) - 'A';

				csucsok[honnan].kiEl.add(hova);
				csucsok[hova].beEl.add(honnan);
				sor = bufferedReader.readLine();
			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// TODO Auto-generated constructor stub
	}

	public void kiIr() {
		int i = 0;
		for (Csucs csucs : csucsok) {
			System.out.println("nev: " + ((char) (i + 'A')) + " (" + i + ") " + csucs.idotartam + " beel: "
					+ csucs.beEl.size() + " kiel: " + csucs.kiEl.size());
			i++;
		}
	}

	/**
	 * 
	 */
	public class Csucs {
		// private char nev;
		private int idotartam;
		private ArrayList<Integer> kiEl;
		private ArrayList<Integer> beEl;

		public int getIdotartam() {
			return idotartam;
		}

		public ArrayList<Integer> getKiEl() {
			return kiEl;
		}

		public ArrayList<Integer> getBeEl() {
			return beEl;
		}

		public Csucs() {
			kiEl = new ArrayList<Integer>();
			beEl = new ArrayList<Integer>();
		}
	}
}
